package des.wangku.operate.standard.task;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Text;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import des.wangku.operate.standard.desktop.DesktopConst;
import des.wangku.operate.standard.swt.freectabfolder.ExcelCTabFolder.InterfaceExcelCTabFolder;
import des.wangku.operate.standard.utls.UtilsMemberFloatCombo;
import des.wangku.operate.standard.utls.UtilsSWTListener;
import des.wangku.operate.standard.utls.UtilsSWTMenu;
import des.wangku.operate.standard.utls.UtilsShiftCompare;

/**
 * 项目的父类
 * @author Sunjian
 * @version 1.0
 * @since jdk1.8
 */
public abstract class AbstractTask2_CompositeExt extends AbstractTask1_Basic implements InterfaceExtRemember,InterfaceExcelCTabFolder{

	/** 主框架中的鼠标右键 */
	protected Menu abstractMenu = new Menu(this);
	/** 主框架中的鼠标右键是否显示相关操作值 */
	protected int abstractMenuValue = 0;

	/** 记忆提示下拉框 */
	public Combo remFloatOutCombo = null;

	/** 记忆提示下拉框对应的Text修改目标 */
	public Text remFloatOutText = null;

	/**
	 * 空的构造函数。如果调用此构造函数，则不初始化内部方法，只生成本Bean<br>
	 * 用于抽出项目class中的信息。无其它功能<br>
	 * 含 Composite 一个参数的构造函数必须存在，平台检索时需要此函数<br>
	 * @param parent Composite
	 */
	public AbstractTask2_CompositeExt(Composite parent) {
		super(parent, SWT.NONE);
	}
	public AbstractTask2_CompositeExt(Composite parent, int style) {
		super(parent, style);
	}
	/**
	 * 启动时调用
	 */
	public void startup_Load() {
		super.startup_Load();
	}
	/**
	 * 对象已经加载并构造后，刷新屏幕后运行此方法
	 */
	public void startup_afterRepaintComposite() {
		/* 记录历史 针对text的值进行记录 */
		System.out.println("afterRepaintComposite....");
		UtilsMemberFloatCombo.setListenerbutton_remember(this);
	}
	/**
	 * 销毁时启动
	 */
	void disposeTask() {
		super.disposeTask();
	}


	/**
	 * 父抽像类初始化
	 */
	void initialization() {
		UtilsMemberFloatCombo.make_FloatCombo(this);
		if(abstractMenu!=null)setMenu(abstractMenu);
		//initCompositeMenu();
		initMenu();
		if (getTask_NameAll() != null) this.setToolTipText(getTask_NameAll());
		if (parentComposite != null) {
			Composite p = parentComposite.getParent();
			if (p != null && getMenuText() != null) p.getShell().setText(getMenuText());
		}
	}


	/**
	 * 初始化
	 * 1:添加鼠标右键菜单，属于通用属性
	 */
	protected void initMenu() {
		if (!UtilsShiftCompare.isCompare(abstractMenuValue, MVver, MVsysQuit, MVmodQuit)) return;
		new MenuItem(abstractMenu, SWT.SEPARATOR);
		if (UtilsShiftCompare.isCompare(abstractMenuValue, MVver)) {
			MenuItem miversion = new MenuItem(abstractMenu, SWT.NONE);
			miversion.setText("版本说明");
			miversion.addListener(SWT.Selection, UtilsSWTListener.getListenerShowVersion(getBasicClass(), DesktopConst.TaskJarVersionFile));
		}
		if (UtilsShiftCompare.isCompare(abstractMenuValue, MVmodQuit)) {
			UtilsSWTMenu.addMenuModelExist(parentComposite, abstractMenu);
		}
		if (UtilsShiftCompare.isCompare(abstractMenuValue, MVsysQuit)) {
			UtilsSWTMenu.addMenuSystemExist(abstractMenu);
		}
	}



	/** 日志 */
	static Logger logger = LoggerFactory.getLogger(AbstractTask2_CompositeExt.class);

	/** 显示模块退出 右键菜单 */
	public static final int MVmodQuit = 2;

	/** 显示系统退出 右键菜单 */
	public static final int MVsysQuit = 4;

	/** 显示版本 右键菜单 */
	public static final int MVver = 1;
	
	/**  显示菜单 默认项 */
	public static final int MVDefault = MVmodQuit|MVsysQuit|MVver;

}
